﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SistemaCenterQuimPost.Plantillas
{
    public partial class frmPlantillaHijo : Form
    {
        public frmPlantillaHijo()
        {
            //Acelera la parte gráfica
            this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
            this.SetStyle(ControlStyles.UserPaint, true);
            // Llamada necesaria para el diseñador.
            InitializeComponent();


        }

        private void frmPlantillaHijo_Load(object sender, EventArgs e)  //En el evento load, enlaza todos los eventos de hab/inhabilitación de los textBox al método (capturador) EnabledChanged.
        {
            foreach (System.Windows.Forms.Control unControl in this.Controls)
            {
                if (unControl is TextBox)
                {
                    unControl.EnabledChanged += new System.EventHandler(textBox_EnabledChanged);
                }
            }

        }

        protected void textBox_EnabledChanged(object sender, EventArgs e)  //captura la habilitacion y deshabilitacion de un textBox (Todos) colocando color blanco o gris, segun esté o no habilitado.
        {
            TextBox unTextBox = (TextBox)sender;

            if (unTextBox.Enabled) 
            {
                unTextBox.BackColor = Color.White;
            
            }else
            {
                unTextBox.BackColor = Color.LightGray;
            }

        }


        private void RestablecerPosicion(object sender, EventArgs e) //Cuando se mueve el formulario hijo se restablece posición.
        {
            /*if ((this.Location.X != 0) || (this.Location.Y != 0))
            {
                this.Location = new Point(0, 0);
            }
            */
        }

        protected void habilitarControles(System.Windows.Forms.Control[] controles) //habilita los controles recibidos como parámetro
        {
            foreach (System.Windows.Forms.Control c in controles)
            {
                c.Enabled = true;
            }
        }

        protected void deshabilitarControles(System.Windows.Forms.Control[] controles) //deshabilita los controles recibidos como parámetro
        {
            foreach (System.Windows.Forms.Control c in controles)
            {
                c.Enabled = false;
            }
        }

        protected void visibleControles(System.Windows.Forms.Control[] controles) //muestra los controles recibidos como parámetro
        {
            foreach (System.Windows.Forms.Control c in controles)
            {
                c.Visible = true;
            }
        }

        protected void invisibleControles(System.Windows.Forms.Control[] controles) //oculta los controles recibidos como parámetro
        {
            foreach (System.Windows.Forms.Control c in controles)
            {
                c.Visible = false;
            }
        }

        protected void informarExistenciaError()
        {
            lblError.Visible = true;
        }

        protected void mostrarErrores()
        {
            //En caso de que el formulario no sea válido se avisa de que el mismo contiene errores.

            StringBuilder mensaje = new StringBuilder();

            foreach (System.Windows.Forms.Control ctrl in this.Controls)
            {
                if (errorProvider1.GetError(ctrl) != "")
                {
                    mensaje.Append(errorProvider1.GetError(ctrl));
                }
            }

            MessageBox.Show(mensaje.ToString(), "INFORME DE ERRORES", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        protected virtual void presionTeclaF1(object sender, KeyEventArgs e)  //captura evento KeyDown. 
        {
            if (e.KeyCode == Keys.F1)
            {

                bool tieneError = false;

                foreach (System.Windows.Forms.Control ctrl in this.Controls)
                {
                    if (errorProvider1.GetError(ctrl) != "")
                    {
                        tieneError = true;
                    }
                }

                if (tieneError) mostrarErrores();
            }

        }

        protected virtual void frmPlantillaHijo_KeyPress(object sender, KeyPressEventArgs e) //Si se ingresa un punto cambia por coma, en todos sus hijos, menos en frmProveedores de Central que redefiney no hace esto.
        {
            if (e.KeyChar == '.')
            {
                // si se pulsa en el punto se convertirá en coma
                e.Handled = true;
                SendKeys.Send(",");
            }
        }

    }
}
